package com.hjp.designmode.builder.domain;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Description: @Builder实现builder模式,源码看Card2.java
 * @Author: huangjp6
 * @Date: 2022/3/24 10:53
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
// @Data和@Builder一起用,需要加上@NoArgsConstructor、@AllArgsConstructor两个注解,否则系统找不到无参构造函数
// 单独使用@Data注解，是会生成无参数构造方法
// 单独使用@Builder注解，发现生成了全属性的构造方法。
public class Card1 {
    // @Builder注解导致默认值无效,解决需要加@Builder.Default注解
    @Builder.Default
    private int id = 1;
    private String name = "huangjp6";
    private boolean sex;

    public static void main(String[] args) {
        Card1 build = new Card1.Card1Builder().build();
        System.out.println(build);
    }
}
